package com.atguigu.zy.interview.jvm.reference;

import java.util.HashMap;
import java.util.WeakHashMap;

/**
 * @author Jungle
 * @create 2022-09-04 16:47
 */
public class WeakHashMapDemo {
    public static void main(String[] args) {
        myHashmap();
        System.out.println("===============");
        myWeakHashMap();

    }

    private static void myHashmap() {
        HashMap<Integer, String> map = new HashMap<>();
        Integer key = new Integer(1);
        String value = "HashMap";
        map.put(key, value);
        System.out.println(map);
        /**
         * 1、这个key是integer的引用
         * 和hashMap的引用没有关系
         */
        key = null;
        System.out.println(map);

        System.gc();
        System.out.println(map+"\t"+map.size());
    }
    /**
     * 1、WeakHashMap，单独的key被置空之后，是会被垃圾回收的，和HashMap不同，可做缓存
     */
    private static void myWeakHashMap() {
        WeakHashMap<Integer, String> map = new WeakHashMap<>();
        Integer key = new Integer(2);
        String value = "WeakHashMap";
        map.put(key, value);
        System.out.println(map);
        /**
         * 1、这个key是integer的引用
         * 和hashMap的引用没有关系
         */
        key = null;
        System.out.println(map);
        System.gc();
        System.out.println(map+"\t"+map.size());
    }
}
